//package com.zmn.plat.admin.controller.oneprice;
//
//import static java.util.stream.Collectors.groupingBy;
//
//import java.util.Collections;
//import java.util.List;
//import java.util.Map;
//import java.util.Optional;
//import java.util.stream.Collectors;
//
//import com.zmn.plat.manager.dictionary.ChannelDict;
//import org.springframework.beans.factory.annotation.Autowired;
//
//import com.zmn.common.constant.GlobalConsts;
//import com.zmn.common.dictionary.GlobalDict;
//import com.zmn.common.dto.KvDTO;
//import com.zmn.common.dto.VtDTO;
//import com.zmn.manager.common.database.annotation.ReadOnlyConnection;
//import com.zmn.plat.admin.controller.PlatBaseController;
//import com.zmn.plat.business.interfaces.channel.ChannelBService;
//import com.zmn.plat.business.interfaces.oneprice.ChannelPriceBService;
//import com.zmn.plat.business.interfaces.oneprice.ServCityPriceBService;
//import com.zmn.plat.common.constant.ProductConsts;
//import com.zmn.plat.model.entity.area.BaseArea;
//import com.zmn.plat.model.entity.channel.Channel;
//import com.zmn.plat.model.entity.channel.ChannelQuery;
//import com.zmn.plat.model.entity.servcategory.ServAssCategory;
//import com.zmn.plat.model.entity.servcategory.ServAssCategoryQuery;
//import com.zmn.plat.model.entity.servcategory.ServCategory;
//import com.zmn.plat.model.vo.servcategory.ServAssCategoryVO;
//import com.zmn.plat.services.interfaces.area.BaseAreaService;
//import com.zmn.plat.services.interfaces.channel.ChannelService;
//import com.zmn.plat.services.interfaces.oneprice.*;
//import com.zmn.plat.services.interfaces.servcategory.ServAssCategoryService;
//import com.zmn.plat.services.interfaces.servcategory.ServCategoryService;
//
//public class ChannelPriceBaseController extends PlatBaseController {
//
//    /**
//     * 省parentId
//     */
//    public static final int AREA_PARENTID = 1;
//
//    @Autowired
//    protected BaseAreaService baseAreaService;
//
//    @Autowired
//    protected ServCityPriceBService servCityPriceBService;
//
//    @Autowired
//    protected ServCityPriceService servCityPriceService;
//
//    @Autowired
//    protected ServCityPriceLogService logService;
//
//    @Autowired
//    protected ChannelPriceService channelPriceService;
//
//    @Autowired
//    protected ChannelPriceBService channelPriceBService;
//
//    @Autowired
//    protected ChannelPriceCityService channelPriceCityService;
//
//    @Autowired
//    protected ChannelService channelService;
//
//    @Autowired
//    protected ChannelBService channelBService;
//
//    @Autowired
//    ChannelPriceLogService channelPriceLogService;
//
//    @Autowired
//    ServCategoryService servCategoryService;
//
//    @Autowired
//    ChannelPriceServService channelPriceServService;
//
//    @Autowired
//    ServCityPriceServService servCityPriceServService;
//
//    @Autowired
//    ChannelPriceCategoryService channelPriceCategoryService;
//
//    @Autowired
//    ServAssCategoryService servAssCategoryService;
//
//    protected List<VtDTO> getProvinceList() {
//        return getAreaList(AREA_PARENTID);
//    }
//
//    protected List<VtDTO> getAreaList(Integer parentId) {
//        return Optional.ofNullable(baseAreaService.listByParentId(parentId))
//            .map(p -> p.stream().map(t -> new VtDTO(t.getAreaId(), t.getName())).collect(Collectors.toList()))
//            .orElse((List<VtDTO>)Collections.EMPTY_LIST);
//    }
//
//    protected BaseArea getAreaById(Integer areaId) {
//        BaseArea byKey = baseAreaService.findByKey(areaId);
//        return byKey;
//    }
//
//    protected List<Channel> listAllChannel() {
//        return channelService.listAll();
//    }
//
//    /**
//     * 品牌站变更：渠道试点只能配置二级渠道 by:章科 黄永胜
//     * @return
//     */
//    protected List<Channel> listEnableRankTwoChannel() {
//        ChannelQuery channelQuery = new ChannelQuery();
//        channelQuery.setStatus(GlobalDict.STATUS_ENABLE);
//        channelQuery.setRank(ChannelDict.RANK_TWO);
//        List<Channel> channelList = channelService.listByQuery(channelQuery);
//        return channelList;
//    }
//
//    /**
//     * 描述: 获取所有的服务分类 转换为VtDto 并且将状态设置为false
//     *
//     * @return java.util.List<com.zmn.common.dto.VtDTO>
//     * @author wangjie
//     * @since 2019/9/6
//     **/
//    protected List<VtDTO> getAllServCategShowName() {
//
//        ServCategory servCategory = new ServCategory();
//        servCategory.setShowStatus(GlobalDict.YESNO_YES);
//        return servCategoryService.listByQuery(servCategory).stream().map(mm -> new VtDTO(mm.getCategId(), mm.getShowName(), false))
//            .collect(Collectors.toList());
//    }
//
//    /**
//     * 获取全部分类信息
//     *
//     * @param showType
//     *            产品分类 1后台 2前台
//     * @return the list
//     */
//    @ReadOnlyConnection
//    protected List<KvDTO<Integer, String>> getAllChildCategory(Integer showType) {
//        ServAssCategoryQuery categoryQuery = new ServAssCategoryQuery();
//        categoryQuery.setCategOneStatus(GlobalConsts.YES);
//        categoryQuery.setCategTwoStatus(GlobalConsts.YES);
//        categoryQuery.setShowType(showType);
//
//        if (ProductConsts.EC_PRODUCT_TYPE.equals(showType)) {
//            categoryQuery.setServCategShowStatus(GlobalConsts.YES);
//        } else {
//            categoryQuery.setServCategStatus(GlobalConsts.YES);
//        }
//
//        List<ServAssCategoryVO> voList = servAssCategoryService.listByQuery(categoryQuery);
//        // 按服务分类分组
//        Map<Integer, List<ServAssCategoryVO>> serviceCategoryMap = voList.stream().collect(groupingBy(ServAssCategory::getServCategId));
//
//        List<KvDTO<Integer, String>> ret = serviceCategoryMap.values().stream().map(serviceCategory -> {
//            // 按一级分类分组
//            Map<Integer, List<ServAssCategoryVO>> categoryOneMap =
//                serviceCategory.stream().collect(groupingBy(ServAssCategory::getCategOneId));
//
//            List<KvDTO> categoryOneList = categoryOneMap.values().stream().map(categoryOne -> {
//                // 二级分类KvDTO
//                List<KvDTO> categList =
//                    categoryOne.stream().map(p -> new KvDTO(p.getCategId(), p.getCategName())).collect(Collectors.toList());
//                // 一级分类KvDTO
//                KvDTO categOne = new KvDTO<>(categoryOne.get(0).getCategOneId(), categoryOne.get(0).getCategOneName());
//                categOne.setChildren(categList);
//                return (KvDTO<Integer, String>)categOne;
//            }).collect(Collectors.toList());
//
//            // 服务分类KvDTO
//            KvDTO dto = new KvDTO<>(serviceCategory.get(0).getServCategId(), serviceCategory.get(0).getServCategName());
//            dto.setChildren(categoryOneList);
//            return (KvDTO<Integer, String>)dto;
//        }).collect(Collectors.toList());
//        return ret;
//    }
//}
